home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 8 / Revista CD Expert nº 08 CD1.iso / Utilitarios / Programacao / Pacific C for DOS / EXAMPLES / READDIR2.C < prev    next >
C/C++ Source or Header  |  1995-03-08  |  1KB  |  54 lines

  1. /*
  2.  *     This is an alternative version of readdir.c which uses msdos() to
  3.  *    read the directory.
  4.  *
  5.  *    This program would require some modification to work with
  6.  *    any of the large data space memory models.
  7.  */
  8.  
  9. #include    <stdio.h>
  10. #include    <string.h>
  11. #include    <dos.h>
  12.  
  13. struct FMATCH {
  14.     char        filler[21];
  15.     unsigned char    attr;
  16.     unsigned short    time, date;
  17.     unsigned long    size;
  18.     char        name[13];
  19. };
  20.  
  21. static void
  22. putdir(char * filename)
  23. {
  24.     register unsigned int     fc, alreg;
  25.     unsigned long        total;
  26.     struct FMATCH        file;
  27.  
  28.     msdos(0x1a00, (unsigned) &file);
  29.     alreg = msdos(0x4e00, (unsigned) filename, 0);
  30.     total = fc = 0;
  31.     while (!alreg) {
  32.         ++fc;            /* increment total file count */
  33.         total += file.size;    /* add filesize to running total */
  34.         printf("%s\t", file.name);
  35.         if (strlen(file.name) < 8)
  36.             putchar('\t');
  37.         printf("%8ld\n", file.size);
  38.         alreg = msdos(0x4f00);
  39.     }
  40.     printf("%ld bytes in %d files\n", total, fc);
  41. }
  42.  
  43. main()
  44. {
  45.     char    buf[128];
  46.  
  47.     do {
  48.         printf("Wildcard: ");
  49.         gets(buf);
  50.         if (*buf)
  51.             putdir(buf);
  52.     } while (*buf);
  53. }
  54.